package com.xiaoq.sites.service;

import com.xiaoq.sites.entity.InterpreterCalendarEntity;
import com.xiaoq.sites.entity.InterpreterEntity;
import com.xiaoq.sites.entity.InterpreterLevelEntity;
import com.xiaoq.sites.vo.InterCalendarDetailVo;
import com.xiaoq.vo.PagingVo;
import org.apache.commons.lang3.StringUtils;
import org.mongodb.morphia.query.Query;

import java.util.List;

public interface IInterpreterService {

	/**
	 * 根据景区ID查询讲解员列表
	 * @param sitesId 景区ID
	 * @param status 讲解员状态
	 * @param pagingVo 分页参数
	 * @return
	 */
	public List<InterpreterEntity> findInterpreterListBySitesId(String sitesId, Integer status, PagingVo pagingVo);

	/**
	 * 根据景区ID查询讲解员 数量
	 * @param sitesId 景区ID
	 * @param status 讲解员状态
	 * @return
	 */
	long findInterpreterListCountBySitesId(String sitesId, Integer status);

	/**
	 * 根据讲解员ID查询讲解员
	 * @param id 讲解员ID
	 * @return
	 */
	public InterpreterEntity findInterpreterById(String id);
	
	/**
	 * 根据讲解员ID查询讲解员日历列表
	 * @param interpreterId 讲解员ID
	 * @return
	 */
	public List<InterpreterCalendarEntity> findInterpreterCalendarListByInterpreterId(String interpreterId);
	
	/**
	 * 根据景区ID，得到讲解员的level
	 * @param sitesId 景区ID
	 * @return
	 */
	public InterpreterLevelEntity findInterpreterLevelBySitesId(String sitesId);

	/**
	 * 得到讲解员 近7天的不能预约的日历
	 * @param interpreterId 讲解员ID
	 * @param sitesId 景区ID
	 * @return
	 */
	InterCalendarDetailVo getNearly7DaysNoInterServiceCalendarList(String interpreterId, String sitesId);

	/**
	 *  根据 interpreterCalendarEntity中的orderId更新数据
	 * @param interpreterCalendarEntity
	 * @return
	 */
	boolean updateInterCalendarByOrderId(InterpreterCalendarEntity interpreterCalendarEntity);

	/**
	 * 保存讲解员
	 * @param interpreterEntity
	 * @return
	 */
	boolean saveInter(InterpreterEntity interpreterEntity);

	/**
	 * 保存讲解员日历
	 * @param interpreterCalendarEntity
	 * @return
	 */
	boolean saveInterCalendar(InterpreterCalendarEntity interpreterCalendarEntity);

	/**
	 * 根据interpreterId和sitesId更新 讲解员
	 * @param interpreterEntity
	 * @return
	 */
	boolean updateInterpreterByIdAndSitesId(InterpreterEntity interpreterEntity);

	/**
	 * 根据讲解员Id和景区ID删除讲解员
	 * @param id 讲解员Id
	 * @param sitesId 景区ID
	 */
	boolean deleteByIdAndSitesId(String id, String sitesId);

	/**
	 * 根据用户ID查询讲解员
	 * @param userId 用户ID
	 * @return
	 */
	InterpreterEntity getInterpreterByUserId(String userId);

	/**
	 *  将讲解员的状态 置为 服务中（已付款，不可预约）
	 *  即 讲解员结束服务
	 * @param interId 讲解员ID
	 * @param shopId 店ID
	 * @return
	 */
	boolean updateInter2Serving(String interId, String shopId);

	/**
	 *  将讲解员的状态 置为 待服务中（已提交订单，未付款，不可预约）
	 * @param interId 讲解员ID
	 * @param shopId 店ID
	 * @return
	 */
	boolean updateInter2WaitService(String interId, String shopId);

	/**
	 *  将讲解员的状态 置为 待服务中（可预约状态）
	 * @param interId 讲解员ID
	 * @param shopId 店ID
	 * @return
	 */
	boolean updateInter2CanAppoint(String interId, String shopId);

	/**
	 *  根据电话查找 讲解员
	 * @param mobile
	 * @return
	 */
	InterpreterEntity findByMobile(String mobile);

	/**
	 *  根据interId 更新讲解员信息
	 * @param interpreterEntity
	 * @return
	 */
	boolean updateByInterId(InterpreterEntity interpreterEntity);

}
